#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//typedef struct Student
//{
//	char name[20];
//	int score;
//}Stu, Student;
//Stu s1 = { "zhangsan",100 };
//Student s2 = { "zhangsan",100 };
//struct Student s3 = { "zhangsan",100 };
//int main()
//{
//	Stu* pa = &s1;
//	printf("%s %d", pa->name, pa->score);
//	printf("%s %d", s2.name, s2.score);
//	printf("%s %d", s3.name, s3.score);
//
//	return 0;
//}


#include <string.h>
//
//int main()
//{
//	char* words[] = { "pay","attention","practice","attend" };
//	int wordsSize = sizeof(words) / sizeof(words[0]);
//	char pref[] = "at";
//	char tmp[101] = { 0 };
//    for (int i = 0; i < wordsSize; ++i)
//    {
//        strcpy(tmp, words[i]);
//        tmp[strlen(pref)] = 0;
//        if (strcmp(tmp, pref) == 0)
//        {
//            ++ans;
//        }
//    }
//	return 0;
//}

//void reverse(char* s1, char* s2)
//{
//    if (s1 < s2)
//    {
//        char tmp = *s1;
//        *s1 = *s2;
//        *s2 = tmp;
//        reverse(s1 + 1, s2 - 1);
//    }
//}
//int main() {
//	char s[] = "abcdefg";
//	int k = 2;
//    char* start = s;
//    char* end = s;
//    char* ans = s;
//    int sum = 0;
//    while (*ans)
//    {
//        ++sum;
//        if (sum == k)
//        {
//            end = ans;
//        }
//        else if (sum == k * 2)
//        {
//            sum = 0;
//            reverse(start, end);
//            start = ans;
//            end = ans;
//        }
//        ++ans;
//    }
//    if (sum >= k && sum > 2 * k)
//    {
//        reverse(start, end);
//    }
//	return 0;
//}


//int main()
//{
//    char s[] = "abab";
//    int slen = strlen(s);
//
//    int len = slen / 2;
//    while (len)
//    {
//        int index = len;
//        char arr[5001] = { 0 };
//        strncpy(arr, s, len);
//        char tmp[5001] = { 0 };
//        while (index < slen)
//        {
//            strcat(tmp, arr);
//            if (strcmp(tmp, s) == 0)
//            {
//                return 1;
//            }
//            index += len;
//        }
//        --len;                                            
//    }
//	return 0;
//}
//
//int main()
//{
//    int nums[] = { -1,-2,-3 };
//    int numsSize = sizeof(nums) / sizeof(nums[0]);
//    int max = nums[0] * nums[1];
//    if (max < nums[numsSize - 1] * nums[numsSize - 2])
//    {
//        max = nums[numsSize - 1] * nums[numsSize - 2];
//    }
//    max *= nums[numsSize - 3];
//}

#include <string.h>
#include <malloc.h>

//int main()
//{                                                       
//	char s  [] = "jjsjjjjjjjjjjvvvvvvvmmmmccccccccccwwwwdddddvvvvvzz";
//    int index = strlen(s);
//    for (int i = 0; i < strlen(s) - 2; ++i)
//    {
//        if (s[i] == s[i + 1] && s[i + 1] == s[i + 2])
//        {
//            s[i] = ' ';
//            --index;
//        }
//    }
//    char ans[100] = { 0 };
//    memset(ans, 0, index + 1);
//    int j = 0;
//    for (int i = 0; i < s[i]; ++i)
//    {
//        if (s[i] != ' ')
//        {
//            ans[j++] = s[i];
//        }
//    }
//	return 0;
//}

#include <ctype.h>
int main()
{
	char licensePlate[] = "1s3 456";
	char* words[] = { "looks", "pest", "stew", "show" };
	int wordsSize = sizeof(words) / sizeof(words[0]);
    int index = 0;
    int arr[26] = { 0 };
    for (int i = 0; licensePlate[i]; ++i)
    {
        if (isalpha(licensePlate[i]))
        {
            if (isupper(licensePlate[i]))
            {
                licensePlate[index] = tolower(licensePlate[i]);
            }
            else
            {
                licensePlate[index] = licensePlate[i];
            }
            ++arr[licensePlate[index] - 'a'];
            ++index;
        }
    }
    int ans = 0;
    licensePlate[index] = 0;
    int shortest = 1001;
    for (int i = 0; i < wordsSize; ++i)
    {
        int tmp[26] = { 0 };
        memset(tmp, 0, sizeof(arr));
        int f = 1;
        for (int j = 0; j < strlen(words[i]); ++j)
        {
            ++tmp[words[i][j] - 'a'];
        }
        for (int x = 0; x < 26; ++x)
        {
            if (tmp[i] < arr[i])
            {
                f = 0;
                break;
            }
        }
        if (f && strlen(words[i]) < shortest)
        {
            ans = i;
        }
    }
	return 0;
}